查看原文
其他

Snowflake发布UniStore,进军HTAP

努力赚钱的小作者 飞总聊IT 2022-06-15

新粉请关注我的公众号

在一年一度的Snowflake Summit上,Snowflake宣布它们发布最新的UniStore,正式进军HTAP市场。


UniStore是Snowflake的一个新的存储引擎,不是Column Store 是个Row Store,它保证了Snowflake对一个row的访问会很快,并支持事务处理。


在UniStore上创建一种新的类型的表叫做HybridTable。这种表可以支持事务处理,用户可以在上面执行OLTP的操作。同时这种表也支持OLAP的操作。因此,这就成了HTAP,同时支持事务处理和分析处理。


HybridTable也开始正式支持一些以前OLAP不支持的东西,比如说Primary Key和Foreign Key。比如说某些类型的索引。目前公布的信息并不是很多。


创建的HybridTable必须要有Primary Key,Snowflake系统会确保这个Primary Key是唯一的。这听起来好像有点意思,为什么必须要Primary Key呢?我们等一下再说。


根据Snowflake公布的信息,Adobe, UiPath, IQVIA, Novarits这几家公司是early adoptor,其中Adobe尤其是早期用户。


Adobe也为Snowflake站台,对在UniStore上同时做事务处理和分析处理的能力赞不绝口,表示好好好。


以上是公开关于UniStore和HybridTable的信息,Snowflake官宣的内容大概就这么多了。


那么下面说一点独家的吧。为什么每个HybridTable需要一个primary Key,这很容易联想到底层用了什么存储。大概率是一个Key-Value Store。


我悄悄问了一圈,结果有人告诉我,底下用的是Foundation DB。有关Foundation DB这个东西,我2018年写过深入分析,有兴趣的,自己在我的公众号上考古吧。我公众号上很多古老的东西,今天去看也还是有点价值的。


但是大概率我觉得这个Foundation DB肯定是魔改过的,不可能是之前那个。


Snowflake之前魔改过一版本,用来处理它的metadata service。


但是Metadata service对throughput和latency的要求,和data上做transaction对这些东西的要求不一样。


不管怎么样,这样一来,底层的存储和TiDB就有点像了。不知道它有没有搞TiDB那样用Raft复制三副本保持稳定性。我希望它最好没搞,因为搞了的话,单机性能大概率和TiDB一样废掉了。


这样一看,Snowflake和TiDB要开始PK HTAP了。但是其实也不尽然,因为TiDB的OPAP不是用Key-Value Store做存储的,用的是魔改的ClickHouse做的。


也就是说TiDB是真的有两份数据,一份给OLTP用一份给OLAP用。而今天看到的这个UniStore,至少现在的实现来看,OLTP的数据并没有额外的OLAP的备份。


很多细节都没有公布出来,比如说,可不可以建索引啊,索引是不是clustered,能不能索引用Column Store来存啊,等等等等了。


但是不管怎么样,如果用Foundation DB来做底层的存储的话,除非魔改的很好,不然Foundation DB的各种问题也继承过来了。总之Foundation DB怎么看都不是一个很好的事务存储引擎。


但是Snowflake依然选择了它,大概率是因为之前魔改做Metadata Service有技术积累了吧。继续魔改也不怕。


现在更有意思的是看Databricks怎么玩了。毕竟Databricks现在想玩LakeHouse,而Snowflake现在却跑去做HTAP了。总是有种Databricks被Snowflake牵着鼻子走的感觉。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存